In the prior art, many message delivery systems exist which offer message delivery between endpoints, such as between different applications. The message delivery systems may implement different message delivery semantics such as point to point or publish/subscribe and different service types such as assured (also know as guaranteed or persistent) and reliable (also known as best effort).
Such messaging systems provide for loosely coupled message delivery between the message source and the receiving application (for one-to-one delivery) or receiving applications (for one-to-many delivery). A messaging system is comprised of many components, some of which are standard and some of which are specific to the particular messaging system. These components include server hosts, applications, network interface cards, network switches, message brokers, software libraries etc.; a particular instance of a messaging system may include some or all of these components. There may also be other sub-functions not mentioned in the previous list that may be featured in a particular implementation. The way in which these components are assembled to create a messaging system is one way messaging system implementations are differentiated. A particular implementation of a messaging system may have advantages over other implementations depending on the requirements of the applications using the messaging system and the characteristics of the message flows between these applications.
The mechanism by which the messaging system determines how to route a particular message to its destination endpoint(s) is another form of differentiation between messaging systems know in the art. Prior art messaging systems use topics (metadata tags added by the message source) or inspection of the message content itself to determine which endpoint(s) to deliver a particular message to. The endpoints may be different applications or a queue that could be shared by multiple applications or a combination of applications and queues. The criteria used by the message delivery system to determine which messages to deliver to which endpoint(s) may be configured by the administrator of the system or the endpoint(s) themselves can indicate their own interests in the form of subscription requests.
Broadly speaking there are two messaging system architectures (and many variants of each). The two architectures are broker and brokerless as they are known in the art. In the broker based systems there is an intermediate system (the broker) in between sending and receiving systems. One advantage of the broker based system is that the broker may be implemented in a separate machine from the applications and therefore contain hardware designed specifically to offload systems hosting the applications from specific processing tasks associated with a messaging system. A disadvantage of the broker based system is that all message flow must pass through the broker and this can add latency to the system especially when message flows are one to many. Under these usage patterns the finite egress bandwidth of the broker and associated serialization latency are at issue.
Brokerless systems have the advantage that there is no intermediate system through which all message flows must pass. Often brokerless systems rely on networking technologies that employ multicast. The networking devices that implement the underlying network can replicate data with high efficiency and have fewer restrictions in terms of egress bandwidth. The use of multicast in the underlying network has the effect of reducing latency associated with the broker and its finite egress bandwidth but at the cost of pushing other functionality implemented in the broker off to the systems hosting the applications. For example the machines hosting applications that are receiving message data are typically required to inspect all messages received over a particular multicast channel and discard messages that the application is not interested in processing; in a broker based system the broker would perform this function.
For many applications a messaging system that features the advantages of both broker and brokerless topologies is desirable. Specifically a messaging system that features the latency characteristics of brokerless systems (particularly with message flows that are one to many) while offloading messaging system processing from the systems hosting the applications as is typical of broker based systems.